<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    

    <script>

var board = 
[
    ['.','.','4','.','.','.','6','3','.'],
    ['.','.','.','.','.','.','.','.','.'],
    ['5','.','.','.','.','.','.','9','.'],
    ['.','.','.','5','6','.','.','.','.'],
    ['4','.','3','.','.','.','.','.','1'],
    ['.','.','.','7','.','.','.','.','.'],
    ['.','.','.','5','.','.','.','.','.'],
    ['.','.','.','.','.','.','.','.','.'],
    ['.','.','.','.','.','.','.','.','.']
]


function isValidSudoku(board) {
    const rows = [],
    columns = [],
    boxes = [];
    for (let i = 0; i < 9; i++) {
        rows[i] = [];
        columns[i] = [];
        boxes[i] = [];
    }
    // debugger;    
    // 对应的 rows 为 [[], [], [], [], [], [], [], [], []]
  
    // 步骤 2：遍历填充值


    for(let i=0;i<9;i++){
        for(let j=0;j<9;j++){
            // 获取值
            // debugger
            const value = board[i][j];
            if(value !== '.'){
                // 检验横排
                if (!rows[i].includes(value)) {
                    rows[i].push(value);
                } else {
                    return false;
                }

                // 检验竖排
                if (!columns[j].includes(value)) {
                    columns[j].push(value);
                } else {
                    return false;
                }

                // 检查盒子
                const boxIndex = Math.floor(i / 3) * 3 + Math.floor(j / 3); // 对应的盒子
                if (!boxes[boxIndex].includes(value)) {
                    boxes[boxIndex].push(value);
                } else {
                    return false;
                }
            }
        }
    }
    return true;
};
// function rotate(matrix) {
//     //先上下调换在对角线兑换
//     var size = matrix.length;
//     for(var i =0;i<size/2;i++){
//         //调换上下
//         var temp= matrix[i];
//         matrix[i] = matrix[size - i - 1];
//         matrix[size - i - 1] = temp;
//     }
//     //对角线
//     for(var i =0;i<size;i++){
//         for(var j =i+1;j<size;j++){
//             var temp = matrix[i][j];
//             matrix[i][j] = matrix[j][i];
//             matrix[j][i] = temp;
//         }
//     }


//     return matrix;

// };
// var matrix = [
//     [1,2,3],
//     [4,5,6],
//     [7,8,9]
// ]
// console.log(rotate(matrix));

    
        // var firstUniqChar = function(s) {
        //     const arr= new Array(26).fill(0)
            
        //     for(let i = 0 ; i <s.length;i++){
                
        //         var index  = s.charCodeAt(i)-97
        //         arr[index]++
        //     }
        //     for(let i = 0 ; i <s.length;i++){ //题目要找的是第一个出现的不重复的，当然应该从头到尾遍历s字符串啊！ 怎么可能从头到尾遍历arr呢 arr是从a-z的
        //         if(arr[s.charCodeAt(i)-97]===1) return i
        //     }
        //     return -1

        // };
        // firstUniqChar('loveleetcode')
        
    </script>
      
    
</body>
</html>